// pages/cart/index.js
/* 
1 页面加载的时候
  1 从缓存中获取购物车数据 渲染到页面中
    这些数据  checked=true 
2 微信支付
  1 哪些人 哪些帐号 可以实现微信支付
    1 企业帐号 
    2 企业帐号的小程序后台中 必须 给开发者 添加上白名单 
      1 一个 appid 可以同时绑定多个开发者
      2 这些开发者就可以公用这个appid 和 它的开发权限  
3 支付按钮
  1 先判断缓存中有没有token
  2 没有 跳转到授权页面 进行获取token 
  3 有token 。。。
  4 创建订单 获取订单编号
  5 已经完成了微信支付
  6 手动删除缓存中 已经被选中了的商品 
  7 删除后的购物车数据 填充回缓存
  8 再跳转页面 
 */
import {
  showModal,
  showToast
} from "../../utils/asyncWx.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {},
    cart: [],
    allChecked: false,
    totalPrice: 0,
    totalNum: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onShow: function (options) {
    const address = wx.getStorageSync("address")
    this.setData({
      address
    });
    // 1 获取缓存中的购物车数据
    const cart = wx.getStorageSync("cart") || [];
    let checkedCart = cart.filter(e => e.checked)
    this.setCart(checkedCart)

  },
  setCart(cart) {
    let totalPrice = 0
    let totalNum = 0
    cart.forEach(e => {
      totalNum += e.num
      totalPrice += e.num * e.goods_price
    })

    this.setData({
      cart,
      totalNum,
      totalPrice
    });
    wx.setStorageSync("cart", cart);
  },
  // 点击 支付
  async handleOrderPay() {
   try{
    const token = wx.getStorageSync("token");
    if (!token) {
      wx.navigateTo({
        url: '/pages/auth/index'
      });
      return
    }
    // 3 创建订单
    // 3.1 准备 请求头参数
    // const header = { Authorization: token };
    // 3.2 准备 请求体参数
    const order_price = this.data.totalPrice;
    const consignee_addr = this.data.address.all;
    const cart = this.data.cart;
    let goods = [];
    cart.forEach(v => goods.push({
      goods_id: v.goods_id,
      goods_number: v.num,
      goods_price: v.goods_price
    }))
    const orderParams = { order_price, consignee_addr, goods };
        // 4 准备发送请求 创建订单 获取订单编号
        const { order_number } = await request({ url: "/my/orders/create", method: "POST", data: orderParams });
          // 5 发起 预支付接口
      const { pay } = await request({ url: "/my/orders/req_unifiedorder", method: "POST", data: { order_number } });
        // 6 发起微信支付 
        await requestPayment(pay);
        // 7 查询后台 订单状态
        const res = await request({ url: "/my/orders/chkOrder", method: "POST", data: { order_number } });
         // 8 手动删除缓存中 已经支付了的商品
      let newCart=wx.getStorageSync("cart");
      newCart=newCart.filter(v=>!v.checked);
      wx.setStorageSync("cart", newCart);
      // 8 支付成功了 跳转到订单页面
      wx.navigateTo({
        url: '/pages/order/index'
      });  
   } catch (error) {
    await showToast({ title: "支付失败" })
    console.log(error);
  }
  }
})